﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Globalization;

namespace Student_management
{
    public partial class frmThayDoiQuyDinh : Form
    {
        Connection db = new Connection();
        string mslop;
        string msmon;
        public frmThayDoiQuyDinh()
        {
            InitializeComponent();
        }

        void loaddata()
        {
            txtmaxtuoi.Text = db.getDS("Select GiaTri from QuyDinh where MaQuyDinh = 'MaxTuoi'").Rows[0][0].ToString();
            txtmintuoi.Text = db.getDS("Select GiaTri from QuyDinh where MaQuyDinh = 'MinTuoi'").Rows[0][0].ToString();
            txtsiso.Text = db.getDS("Select GiaTri from QuyDinh where MaQuyDinh = 'MaxSiSo'").Rows[0][0].ToString();
            txtdiem.Text = db.getDS("Select GiaTri from QuyDinh where MaQuyDinh = 'DiemDat'").Rows[0][0].ToString();
        }

        private void frmThayDoiQuyDinh_Load(object sender, EventArgs e)
        {
            this.Dock = DockStyle.Fill;
            cBoKhoi.ResetText();
            DataTable dt = db.getDS("Select MaKhoi from Khoi");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                string stringcomboBox = dt.Rows[i]["MaKhoi"].ToString();
                cBoKhoi.Items.Add(stringcomboBox);
            }
            loaddata();
            grdt1.DataSource = db.getDS("Select * from Lop");
            grdt2.DataSource = db.getDS("Select * from Mon");
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            try
            {
                float diem;
                int maxtuoi, mintuoi, siso;
                diem = float.Parse(txtdiem.Text.Replace(",", "."), CultureInfo.InvariantCulture);
                maxtuoi = int.Parse(txtmaxtuoi.Text);
                mintuoi = int.Parse(txtmintuoi.Text);
                siso = int.Parse(txtsiso.Text);
                if (checksiso(siso))
                {
                    MessageBox.Show("Không thể lưu do hiện có lớp có sỉ số lớn hơn " + siso, "Lỗi");
                    return;
                }
                if (diem > 10 || diem < 0)
                {
                    MessageBox.Show("Điểm đạt phải từ 0 đến 10", "Lỗi");
                    return;
                }
                db.getDS("Update QuyDinh set GiaTri = '" + maxtuoi + "' where MaQuyDinh = 'MaxTuoi'");
                db.getDS("Update QuyDinh set GiaTri = '" + mintuoi + "' where MaQuyDinh = 'MinTuoi'");
                db.getDS("Update QuyDinh set GiaTri = '" + siso + "' where MaQuyDinh = 'MaxSiso'");
                db.getDS("Update QuyDinh set GiaTri = '" + diem.ToString().Replace(",", ".") + "' where MaQuyDinh = 'DiemDat'");
                MessageBox.Show("Lưu thành công");
            }
            catch
            {
                MessageBox.Show("Dữ liệu không hợp lệ");
            }
        }

        bool checksiso(int a)
        {
            DataTable b = db.getDS("Select MaLop from Lop");
            for (int i = 0; i < b.Rows.Count ; i++)
            {
                if (db.getDS("Select * from HocSinh where MaLop='" + b.Rows[i][0].ToString() + "'").Rows.Count > a)
                    return true;
            }
            return false;
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            loaddata();
        }

        private void Enable(bool a, bool b)
        {
            if (b)
            {
                grdt1.Enabled = !a;
                btnThemLop.Enabled = !a;
                btnSuaLop.Enabled = !a;
                btnXoaLop.Enabled = !a;
                btnLuuLop.Enabled = a;
                btnHuyLop.Enabled = a;
                txtmalop.Enabled = a;
                cBoKhoi.Enabled = a;
            }
            else
            {
                grdt2.Enabled = !a;
                btnThemMon.Enabled = !a;
                btnSuaMon.Enabled = !a;
                btnXoaMon.Enabled = !a;
                btnLuuMon.Enabled = a;
                btnHuyMon.Enabled = a;
                txtmamon.Enabled = a;
                txttenmon.Enabled = a;
            }
        }
        private void grdt1_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            int RowIndex = e.RowIndex;
            txtmalop.Text = grdt1.Rows[RowIndex].Cells["MaLop"].Value.ToString();
            cBoKhoi.Text = grdt1.Rows[RowIndex].Cells["MaKhoi"].Value.ToString();
        }

        private void grdt2_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            int RowIndex = e.RowIndex;
            txtmamon.Text = grdt2.Rows[RowIndex].Cells["MaMon"].Value.ToString();
            txttenmon.Text = grdt2.Rows[RowIndex].Cells["TenMon"].Value.ToString();
        }

        private void btnThemLop_Click(object sender, EventArgs e)
        {
            mslop = null;
            txtmalop.Text = "";
            cBoKhoi.SelectedValue = 0;
            Enable(true, true);
        }

        private void btnHuyMon_Click(object sender, EventArgs e)
        {
            Enable(false, false);
            grdt2.DataSource = db.getDS("Select * from Mon");
        }

        private void btnThemMon_Click(object sender, EventArgs e)
        {
            msmon = null;
            txtmamon.Text = "";
            txttenmon.Text = "";
            Enable(true, false);
        }

        private void btnSuaLop_Click(object sender, EventArgs e)
        {
            mslop = txtmalop.Text;
            Enable(true, true);
        }

        private void btnSuaMon_Click(object sender, EventArgs e)
        {
            msmon = txtmamon.Text;
            Enable(true,false);
        }

        private void btnHuyLop_Click(object sender, EventArgs e)
        {
            Enable(false, true);
            grdt1.DataSource = db.getDS("Select * from Lop");
        }

        private void btnXoaLop_Click(object sender, EventArgs e)
        {
            if (grdt1.SelectedRows.Count > 1)
            {
                if (MessageBox.Show("Bạn Có Chắc Muốn xóa các lớp đã chọn", "Xóa", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    try
                    {
                        for (int i = 0; i < grdt1.SelectedRows.Count; i++)
                            db.getDS("delete Lop where MaLop ='" + grdt1.SelectedRows[i].Cells["MaLop"].Value.ToString() + "'");
                        MessageBox.Show("Xóa Thành Công!");
                    }
                    catch (Exception a)
                    {
                        MessageBox.Show(a.Message + "\n Chuyển hết học sinh sang lớp khác trước khi xóa", "Không xóa được!");
                    }
                }
            }
            else
                if (MessageBox.Show("Bạn Có Chắc muốn xóa lớp có mã " + txtmalop.Text + " Không ?", "Xóa", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    try
                    {
                       db.getDS("delete Lop where MaLop ='" + txtmalop.Text + "'");
                       MessageBox.Show("Xóa Thành Công!");
                    }
                    catch (Exception a)
                    {
                        MessageBox.Show(a.Message + "\n Chuyển hết học sinh sang lớp khác trước khi xóa", "Không xóa được!");
                    }
                }
            grdt1.DataSource = db.getDS("Select * from Lop");
        }

        private void btnXoaMon_Click(object sender, EventArgs e)
        {
            if (grdt2.SelectedRows.Count > 1)
            {
                if (MessageBox.Show("Bạn Có Chắc Muốn xóa các môn đã chọn? \nTất cả điểm số của các môn này xẽ bị xóa", "Xóa", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    try
                    {
                        for (int i = 0; i < grdt2.SelectedRows.Count; i++)
                            db.getDS("delete Mon where MaMon ='" + grdt2.SelectedRows[i].Cells["MaMon"].Value.ToString() + "'");
                        MessageBox.Show("Xóa Thành Công!");
                    }
                    catch (Exception a)
                    {
                        MessageBox.Show(a.Message , "Không xóa được!");
                    }
                }
            }
            else
                if (MessageBox.Show("Bạn Có Chắc muốn xóa môn " + txttenmon.Text + " Không ?\nTất cả điểm số của môn này xẽ bị xóa", "Xóa", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    try
                    {
                        db.getDS("delete Mon where MaMon ='" + txtmamon.Text + "'");
                        MessageBox.Show("Xóa Thành Công!");
                    }
                    catch (Exception a)
                    {
                        MessageBox.Show(a.Message, "Không xóa được!");
                    }
                }
            grdt2.DataSource = db.getDS("Select * from Mon");
        }

        private void btnLuuLop_Click(object sender, EventArgs e)
        {
            try
            {
                if (mslop != null)
                {
                    db.getDS("Update Lop set MaKhoi='" + cBoKhoi.Text + "', MaLop ='" + txtmalop.Text + "' where MaLop='" + mslop + "'");
                    MessageBox.Show("Cập nhật thành công");
                }
                else
                {
                    db.getDS("Insert Lop values ('" + txtmalop.Text + "','" + cBoKhoi.Text + "')");
                    MessageBox.Show("Thêm thành công !");
                }
            }
            catch
            {
                MessageBox.Show("Xem Lai Du Lieu Da Nhap");
            }
            grdt1.DataSource = db.getDS("Select * from Lop");
            Enable(false, true);
        }

        private void btnLuuMon_Click(object sender, EventArgs e)
        {
            try
            {
                if (msmon != null)
                {
                    db.getDS("Update Mon set MaMon='" + txtmamon.Text + "', TenMon =N'" + txttenmon.Text + "' where MaMon='" + msmon + "'");
                    MessageBox.Show("Cập nhật thành công");
                }
                else
                {
                    db.getDS("Insert Mon values ('" + txtmamon.Text + "',N'" + txttenmon.Text + "')");
                    MessageBox.Show("Thêm thành công !");
                }
            }
            catch
            {
                MessageBox.Show("Xem Lai Du Lieu Da Nhap");
            }
            grdt2.DataSource = db.getDS("Select * from Mon");
            Enable(false, false);
        }

    }
}
